﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Security.Cryptography;
using System.Text;

public partial class user_edit : BasePage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            txtName.Attributes.Add("readonly", "readonly");
            db();
        }
    }
    void db()
    {
        string name = Request["name"];
        CMSModel.CMSEntities dal = DAL.DBManager.GetCmsEmtity();
        CMSModel.User user = dal.User.First(x => x.LoginName == name);
        txtName.Text = user.LoginName;
        EncryptClasses.DESEncrypt des = new EncryptClasses.DESEncrypt();
        txtPwd.Text = user.pwd;
        ddlRole.DataSource = dal.Role;
        ddlRole.DataBind();
        ddlRole.SelectedValue = user.Role.RoleId.ToString();
        if (user.IsEnable == false)
            rbtnForbidden.Checked = true;
        else
            rbtnNormal.Checked = true;
    }
    protected void btnSave_Click(object sender, EventArgs e)
    {
        string name = Request["name"];
        CMSModel.CMSEntities dal = DAL.DBManager.GetCmsEmtity();
        CMSModel.User user = dal.User.First(x => x.LoginName == name);
        user.LoginName = txtName.Text;
        EncryptClasses.DESEncrypt des = new EncryptClasses.DESEncrypt();
        user.pwd = getMd5Hash(txtPwd.Text);
       
        user.RoleId = int.Parse(ddlRole.SelectedValue);
        if (rbtnForbidden.Checked)
            user.IsEnable = false;
        else
            user.IsEnable = true;
        try
        {
            dal.SaveChanges();
            ClientScript.RegisterStartupScript(GetType(), "save", "alert('修改成功'),document.location='Default.aspx'", true);
        }
        catch (Exception ex)
        {
            LogYuMin.LogWriter.GetWriter(LogYuMin.LogFile.error).Write(GetType(), "editUser", LogYuMin.LogStates.ERROR, ex);
            ClientScript.RegisterStartupScript(GetType(), "save", "alert('修改失败')", true);
        }
    }
    /// <summary>
    /// 加密字符串
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    static string getMd5Hash(string input)
    {
        // Create a new instance of the MD5CryptoServiceProvider object.
        MD5 md5Hasher = MD5.Create();

        // Convert the input string to a byte array and compute the hash.
        byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));

        // Create a new Stringbuilder to collect the bytes
        // and create a string.
        StringBuilder sBuilder = new StringBuilder();

        // Loop through each byte of the hashed data 
        // and format each one as a hexadecimal string.
        for (int i = 0; i < data.Length; i++)
        {
            sBuilder.Append(data[i].ToString("x2"));
        }

        // Return the hexadecimal string.
        return sBuilder.ToString();
    }
}